package com.ll.collections;

import java.util.*;

/**
 * @author 刘龙
 * @version 1.0
 */
public class CollectionsDemo {
    public static void main(String[] args) {
        List list = new ArrayList();
        list.add("tom");
        list.add("java");
        list.add("c#");
        list.add("python");

        // [tom, java, c#, python]
        System.out.println(list);

        // reverse 反转List中元素的顺序
        Collections.reverse(list);
        // [python, c#, java, tom]
        System.out.println(list);

        // 对集合进行随机排序
        Collections.shuffle(list);
        // [java, python, c#, tom]
        System.out.println(list);

        //sort 根据元素的自然顺序对指定的List集合元素按升序排序
        Collections.sort(list);
        // [c#, java, python, tom]
        System.out.println(list);

        // swap(List, int, int): 将指定list集合的元素进行交换
        Collections.swap(list, 0, 1);
        // [java, c#, python, tom]
        System.out.println(list);


        // 按自然排序,返回最大值
        Comparable max = Collections.max(list);
        // tom
        System.out.println(max);

        // 自定义,返回长度最大的元素
        Object max2 = Collections.max(list, new Comparator() {
            @Override
            public int compare(Object o1, Object o2) {
                return ((String) o1).length() - ((String) o2).length();
            }
        });
        // python
        System.out.println(max2);

        // frequency 统计元素出现的次数
        // 1
        System.out.println(Collections.frequency(list, "c#"));

        // copy 拷贝
        // 拷贝前,需要给被拷贝的集合初始化
        ArrayList arrayList1 = new ArrayList();
        for (int i = 0; i < list.size(); i++) {
            arrayList1.add(" ");
        }
        Collections.copy(arrayList1, list);
        // [java, c#, python, tom]
        System.out.println(arrayList1);


        // replaceAll 元素替换
        Collections.replaceAll(list, "java", "爪哇");
        // [爪哇, c#, python, tom]
        System.out.println(list);

        LinkedList linkedList = new LinkedList();
        linkedList.add(null);
        linkedList.add(null);

        System.out.println(linkedList);
    }
}
